package com.lmt.mq_xhr;


import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendCallback;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.StandardCharsets;

/**
 * @Description: 生产者
 * @Author: Amazing
 * @Date: 2022/7/25 12:28
 * @Version: 1.0
 */
public class Producer {
    public static void main(String[] args) throws Exception{
        // 创建生产者对象
        DefaultMQProducer producer = new DefaultMQProducer("producer_hello_group");
        // 连接mq
        producer.setNamesrvAddr("127.0.0.1:9876");
        // 启动生产者
        producer.start();
        // 设置消息，
        Message message = new Message("xhr", "hello", "我爱学习，学习使我快乐".getBytes(StandardCharsets.UTF_8));
        // 发送消息 ：先会和nameserver集群中的一台建立长链接，并从NameServer中获取当前发送的Topic（xhr）存在哪些Broker上，
        // 轮询队列列表，选择一个队列，然后和队列所在的broker建立长链接从而向broker发送消息
        producer.send(message, new SendCallback() {
            @Override
            public void onSuccess(SendResult sendResult) {
                System.out.println(sendResult);
            }

            @Override
            public void onException(Throwable throwable) {
                throwable.printStackTrace();
                System.out.println("消息发送失败");
            }
        });
        // 关闭生产者
        // producer.shutdown();

    }
}
